Many modern computing devices, such as tablet computers, smart phones, and the like, include a touch screen configured to facilitate user interaction with one or more applications executed by the computing devices. For example, a computing device may be configured to display a virtual keyboard on a touch screen. A user may tap or touch various buttons displayed within the virtual keyboard to provide text-based input to the computing device.
Unfortunately, virtual keyboards have various inherent disadvantages associated therewith. For example, many virtual keyboards occupy a significant portion of a touch screen, thereby making it difficult for a user to view other content on the touch screen while providing text-based input. Furthermore, a user typically has to look at the virtual keyboard as he or she uses it because there is no tactile feedback similar to that associated with physical keyboards. Yet another disadvantage of virtual keyboards is that they typically have fixed positions and sizes, thereby making it difficult for users with relatively large hands or with special needs to use them.